The present invention generally relates to networks, and more particularly relates to an exchange of large blocks of contiguous data between nodes on a bus having a limited packet size.
An important function of computer systems is the transfer of data from one node to another. Usually such nodes are connected by a bus over which a sending node transfers data packets to a receiving node. When two nodes on a bus exchange a large block of contiguous data across a bus that only allows packets of a limited size, the sending node must divide the block into a number of smaller packets. A problem exists in that, if these packets are transmitted out of order, a receiving node must put the packets back in order before handing the block of data to a next layer of protocol or to another node.
Known solutions include indexing buffers, storing the data packets into the indexed buffers, and handing the indexed buffers to upper layer protocols one at a time in the proper sequence, regardless of receipt order. A problem is that handing the buffers to the protocol demands large amounts of processor overhead. Another known strategy is to perform memory-to-memory copies of the packets to sort the buffers into the proper order. Such memory-to-memory copies, however, would typically require three memory-to-memory copies for every two packets that need to be swapped. Thus, this method also mandates high processor overhead and consumes a significant amount of memory bandwidth.
Thus, it is an object of the present invention to provide an improved method for conserving processor bandwidth and memory bandwidth during the exchange of large blocks of contiguous data that are divided into a number of order dependent small packets.
Another object of the present invention is to provide such an improved method for eliminating the need for software to sort buffers to reassemble large blocks of contiguous data in which some of the constituent packets were received out of order.
Yet another object of the present invention is to provide such an improved method which utilizes hardware to automatically route data packets to a proper memory location regardless of the order of receipt.